package object;

/**
 * this关键字
 */
public class This01 {

    public static void main(String[] args) {

        /*
            java虚拟机会给每个对象分配一个this，代表当前对象。
            简单来说，哪个对象调用，this就代表哪个对象
         */
        This this1 = new This("张三", 20);
        System.out.println("this1的 hashcode=" + this1.hashCode());
        //this1调用了 info() 方法
        this1.info();
        System.out.println("===============");
        This this2 = new This("李四", 30);
        System.out.println("this2的 hashcode=" + this2.hashCode());
        this2.info();
    }
}


class This {

    public String name;

    public int age;

    //构造方法的输入参数名不好，如果能将tName改成name就好了，但是根据变量的作用域原则，
    // 构造器的 name 是局部变量(形参)而不是属性 ，name的值就是null
    //此时可以使用this关键字
//    public This(String tName, int tAge) {
//        name = tName;
//        age = tAge;
//    }
    public This(String name, int age) {
        this.name = name; //this.name 就是当前对象的属性name
        this.age = age;
        System.out.println("this.hashCode=" + this.hashCode());
    }

    public void info() {
        System.out.println(name + "\t" + age + "\t");
    }
}